﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProjControleModelos;
using ProjControleBLL;

namespace ProjControle
{
    public partial class frm_cadastro_funcionario : Form
    {
        Char tipo_controle;
        public frm_cadastro_funcionario()
        {
            InitializeComponent();
        }
        #region Métodos
        public void inserir()
        {
            tipo_controle = 'I';
            gbDados.Enabled = true;
            bAlterar.Enabled = false;
            bIncluir.Enabled = false;
            bExcluir.Enabled = false;
            bSalvar.Enabled = true;
            bVoltar.Enabled = false;
            bCancelar.Enabled = true;
            gbLocalizar.Enabled = false;
            tbCpf.Focus();
        }
        public void alterar()
        {
            tipo_controle = 'A';
            gbDados.Enabled = true;
            bAlterar.Enabled = false;
            bIncluir.Enabled = false;
            bExcluir.Enabled = false;
            bSalvar.Enabled = true;
            bVoltar.Enabled = false;
            bCancelar.Enabled = true;
            gbLocalizar.Enabled = false;
        }
        public void limpar()
        {
            tbBairro.Text = "";
            tbCelular.Text = "";
            tbCodigo.Text = "";
            tbCpf.Text = "";
            tbEndereco.Text = "";
            tbLocalizar.Text = "";
            tbLogin.Text = "";
            tbNome.Text = "";
            tbNum_casa.Text = "";
            tbRG.Text = "";
            tbSenha.Text = "";
            rtbObservacao.Text = "";
            Dtcadastro.Value = DateTime.Now;
            Dtnascimento.Value = DateTime.Now;
            tbTelefone.Text = "";
            gbDados.Enabled = false;
            dgFuncionarios.DataSource = null;
            gbLocalizar.Enabled = true;
            bIncluir.Enabled = true;
            bAlterar.Enabled = false;
            bExcluir.Enabled = false;
            bSalvar.Enabled = false;
            bVoltar.Enabled = true;
            associaGrid();
        }
        public void frm_load()
        {
            gbDados.Enabled = false;
            gbLocalizar.Enabled = true;
            bIncluir.Enabled = true;
            bAlterar.Enabled = false;
            bSalvar.Enabled = false;
            bVoltar.Enabled = true;
            bExcluir.Enabled = false;
            associaGrid();


        }
        public void associaGrid()
        {
            DataTable tab;
            try
            {
                tab = new DataTable();
                tab.Columns.Add("cod_funcionario");
                tab.Columns.Add("nome_funcionario");
                dgFuncionarios.DataSource = tab;
                dgFuncionarios.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgFuncionarios.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                dgFuncionarios.AllowUserToAddRows = false;
                dgFuncionarios.AllowUserToResizeRows = false;
                dgFuncionarios.AllowUserToResizeColumns = false;
                dgFuncionarios.Columns["cod_funcionario"].HeaderText = "Código";
                dgFuncionarios.Columns["cod_funcionario"].Width = 70;
                dgFuncionarios.Columns["nome_funcionario"].HeaderText = "Nome";
                dgFuncionarios.Columns["nome_funcionario"].Width = 250;
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
           
        }
        public Funcionarios carregaPropriedades()
        {
            Funcionarios objF = new Funcionarios();
            try
            {
                if (tbCodigo.Text == "")
                    objF.codigo = 0;
                else
                    objF.codigo = int.Parse(tbCodigo.Text);
                objF.bairro = tbBairro.Text;
                objF.celular = tbCelular.Text.ToString();
                
                objF.cpf = tbCpf.Text.ToString();
                objF.dt_cadastro = Dtcadastro.Value;
                //if ()
                //    objF.dt_demissao = null;
                //else
                //    objF.dt_demissao = DateTime.Parse(Dtdemissao.Text);
                objF.dt_nascimento = Dtnascimento.Value;
                objF.endereco = tbEndereco.Text;
                objF.login = tbLogin.Text;
                objF.nome = tbNome.Text;
                objF.num_casa = tbNum_casa.Text.ToString();
                objF.observacao = rtbObservacao.Text.ToString();
                objF.rg = tbRG.Text.ToString();
                objF.senha = tbSenha.Text.ToString();
                objF.telefone = tbTelefone.Text.ToString();
                
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
            return objF;
        }
        public void carregaCampos(Funcionarios objF)
        {
            try
            {
                tbBairro.Text = objF.bairro;
                tbCelular.Text = objF.celular.ToString();
                tbCodigo.Text = objF.codigo.ToString();
                tbCpf.Text = objF.cpf.ToString();
                tbEndereco.Text = objF.endereco;
                tbLogin.Text = objF.login;
                tbNome.Text = objF.nome;
                tbNum_casa.Text = objF.num_casa.ToString();
                tbRG.Text = objF.rg.ToString();
                tbSenha.Text = objF.senha.ToString();
                tbTelefone.Text = objF.telefone.ToString();
                Dtcadastro.Value = objF.dt_cadastro;
                Dtnascimento.Value = objF.dt_nascimento;
                rtbObservacao.Text = objF.observacao.ToString();
                //if (objF.dt_demissao.ToString() == "")
                //    Dtdemissao.Text = "";
                //else
                //    Dtdemissao.Text = objF.dt_demissao.ToString();
                //rtbObservacao.Text = objF.observacao.ToString();
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
        }
        
        #endregion

        private void frm_cadastro_funcionario_Load(object sender, EventArgs e)
        {
            frm_load();
        }

        private void bIncluir_Click(object sender, EventArgs e)
        {
            inserir();
        }

        private void bAlterar_Click(object sender, EventArgs e)
        {
            alterar();
        }

        private void bCancelar_Click(object sender, EventArgs e)
        {
            limpar();
        }

        private void bVoltar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void bSalvar_Click(object sender, EventArgs e)
        {
            FuncionarioBLL objBLL = null;
           Funcionarios objF = null;
            try
            {
                objF = carregaPropriedades();
                objBLL = new FuncionarioBLL();
                if (tipo_controle == 'I')
                    objBLL.inserir(objF);
                else
                    objBLL.alterar(objF);

                MessageBox.Show("Salvo com Sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                bCancelar_Click(sender, e);
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
            objBLL = null;
        }

        private void bExcluir_Click(object sender, EventArgs e)
        {
            FuncionarioBLL objBLL = null;
            Funcionarios objF = null;
            try
            {
                if (MessageBox.Show("Deseja Excluir?", "Mensagem", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                {
                    objBLL = new FuncionarioBLL();
                    objF = carregaPropriedades();
                    objBLL.excluir(objF);
                    MessageBox.Show("Excluido com Sucesso", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    limpar();
                }
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
            objBLL = null;
            objF = null;
        }

        private void dgFuncionarios_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int codigo = 0;
            FuncionarioBLL objBLL = null;
            Funcionarios objF = null;
            try
            {
                codigo = int.Parse(dgFuncionarios.Rows[e.RowIndex].Cells[0].Value.ToString());
                if (codigo != 0)
                {
                    bAlterar.Enabled = true;
                    bExcluir.Enabled = true;
                    bIncluir.Enabled = false;
                    bCancelar.Enabled = true;
                    objBLL = new FuncionarioBLL();
                    objF = objBLL.localizar(codigo);
                    if (objF.codigo != 0)
                    {
                        carregaCampos(objF);
                    }
                }
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }

        }

        private void tbLocalizar_KeyPress(object sender, KeyPressEventArgs e)
        {
            FuncionarioBLL objBLL;
            if (e.KeyChar == Convert.ToChar(Keys.Space))
            {
                try
                {
                    DataTable tab;
                    objBLL = new FuncionarioBLL();
                    tab = objBLL.localizar(tbLocalizar.Text.Trim());
                    if (tab.Rows.Count > 0)
                    {
                        dgFuncionarios.DataSource = tab;
                        for (int i = 2; i < dgFuncionarios.Columns.Count; i++)
                            dgFuncionarios.Columns[i].Visible = false;
                    }
                    else
                        MessageBox.Show("Registro(s) não Encontrado(s)!", "Cleintes", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                catch (Exception ex)
                {

                    MessageBox.Show(ex.Message);
                }
            }
        }

    }
}
